home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / util / moni / CopperDecode.lha / CopperDecode / CopperShow.bas < prev    next >
BASIC Source File  |  1999-05-21  |  2KB  |  56 lines

  1. ' Copper List Screen disasassembler SNG May 1999, HiSoft BASIC, WB2+
  2.  
  3. WINDOW 1,"  AGA Copper Disassembler",(20,16)-(600,380),1+2+4+16+256
  4.  
  5. ver$="$VER: Copper Disassembler v2.2s © 21 May 1999 Simon N Goodwin"
  6.  
  7. LIBRARY OPEN"graphics.library":gfxbase&=LIBRARY("graphics.library")
  8. IF gfxbase&=0 THEN PRINT "Graphics library not found!" : STOP
  9.  
  10. coplist&=PEEKL(gfxbase&+50) : REM Find long Frame Copper list
  11. IF coplist&=0 THEN PRINT "Copper list not found!" : STOP
  12.  
  13. c&=coplist&
  14. REPeat dis
  15.   w1%=PEEKW(c&) : w2%=PEEKW(c&+2) : PRINT c&,
  16.   IF w1% AND 1
  17.     REM WAIT or SKIP?
  18.     IF w2% AND 1 THEN PRINT "SKIP to "; ELSE PRINT "WAIT for";
  19.     PRINT " Y =";PEEK(c&);" X =";(PEEK(c&+1) AND 254);
  20.     IF (w2% AND 32766)<>32766 THEN PRINT "& %";BIN$(w2% AND 32766);
  21.     PRINT
  22.   ELSE 
  23.     IF w1% AND (&hFE01-65536)
  24.       PRINT " Bad MOVE #";FN POS&(w2%);"to ";FN POS&(w1%)
  25.     ELSE 
  26.       PRINT "MOVE "; : SELECT ON w1%
  27.         =142 TO 148
  28.           PRINT "(X=";PEEK(c&+3);",Y=";PEEK(c&+2);") to ";
  29.           IF w1%>144 THEN PRINT "DDF"; : ELSE PRINT "DIW";
  30.           IF w1% AND 2 THEN PRINT "START" : ELSE PRINT "STOP"
  31.         =224 TO 254
  32.           PRINT FN POS&(w2%);"to BPL";CHR$(49+(w1% AND 28)\4);
  33.           IF w1% AND 2 THEN PRINT "PTL" : ELSE PRINT "PTH"
  34.         =256 TO 262
  35.           PRINT "%";BIN$(w2%);" to BPLCON";CHR$(48+((w1%-256)\2))
  36.         =264 TO 266
  37.           PRINT w2%;"to BPL";CHR$(49+((w1% AND 2)=2));"MOD"
  38.         =268: PRINT PEEK(c&+2);"," ;(PEEK(c&+3)\16);
  39.           PRINT ",";(PEEK(c&+3) AND 15);"to BPLCON4"
  40.         =288 TO 318
  41.           PRINT FN POS&(w2%);"to SPR";CHR$(48+(w1% AND 28)\4);
  42.           IF w1% AND 2 THEN PRINT "PTL" : ELSE PRINT "PTH"
  43.         =384 TO 446: PRINT "R =";(w2%\256);:REM Palette change
  44.           PRINT "G =";((w2% AND 240)\16);"B =";(w2% AND 15);
  45.           PRINT "to COLOUR";((w1%-384)\2)
  46.         =484: PRINT "%";BIN$(w2%);" to DIWHIGH"
  47.         =508: PRINT "%";BIN$(w2%);" to FMODE"
  48.         =REMAINDER: PRINT FN POS&(w2%);"to $";HEX$(w1%)
  49.       END SELect 
  50.     END IF 
  51.   END IF : c&=c&+4
  52.   IF w1%=-1 AND w2%=-2 THEN PRINT " End of Copper List" : EXIT dis
  53. END REPEAT dis : STOP
  54.  
  55. DEF FN POS&(t%)=-t%*(t%>=0)-(t%<0)*(65536+t%) ' REM Unsigned word
  56.